package main

import (
	"fmt"
	"unsafe"
)

type Mystruct struct {
	// a, b, c, d int8
	a int8 // 1byte
	b int8 // 1byte
	c int8 // 1byte
	d int8 // 1byte
}

func Mystruct1() {
	// 查看结构体大小
	var v1 Mystruct
	fmt.Println(v1)                // 多大？
	fmt.Println(unsafe.Sizeof(v1)) // 输出结果为4

	fmt.Printf("v1.a: %p\n", &v1.a)
	fmt.Printf("v1.b: %p\n", &v1.b)
	fmt.Printf("v1.c: %p\n", &v1.c)
	fmt.Printf("v1.d: %p\n", &v1.d)
}

func main() {
	//// 定义一个空结构体
	//type Mystruct2 struct{}
	//
	//var v2 = Mystruct2{}
	//fmt.Println(unsafe.Sizeof(v2)) // 0
	//
	//var set1 map[string]struct{}
	//{
	//}
	//fmt.Println(set1)

	// 给一堆人名，去重
	nameList := []string{"亚索", "锐雯", "凯瑟琳", "亚索", "亚索", "德莱厄斯"}

	// 利用map的key不能重复
	//var nameMap = make(map[string]bool)
	//for _, name := range nameList {
	//	nameMap[name] = true
	//}
	//// 去重
	//for key := range nameMap {
	//	fmt.Println(key)
	//}
	var nameMap = make(map[string]struct{})
	for _, name := range nameList {
		nameMap[name] = struct{}{}
	}
	for name := range nameMap {
		fmt.Println(name)
	}
}
